The Converge programming language
نویسنده
چکیده
class ML1_Element { name : String; inv nonempty_name: name != null and name.len() > 0 } Note that the DSL fragment is written in an entirely different syntax than Converge itself. Currently DSL blocks are automatically tokenized by the Converge compiler using its default tokenization rules — this is not a fundamental requirement of the technique, but a peculiarity of the current implementation. More sophisticated implementations might choose to defer tokenization to the DSL implementation function. However using the Converge tokenizer has the advantage that normal Converge code can be embedded inside the DSL itself assuming an appropriate link from the DSL’s grammar to the Converge grammar. 5.1 DSL implementation functions DSL implementation functions follow a largely similar sequence of steps in order to translate the input tokens into an ITree: 1. Alter the input tokens as necessary. Since DSL’s often use keywords that are not part of the main Converge grammar, such alterations mostly take the form of replacing ID tokens with specific keyword tokens. 2. Parse the input tokens according to the DSL’s grammar. 3. Traverse the parse tree, translating it into an ITree. Section 6 explores these steps in greater detail via a concrete example.
منابع مشابه
Compile-time meta-programming in Converge
Compile-time meta-programming allows programs to be constructed by the user at compile-time. Few modern languages are capable of compile-time meta-programming, and of those that do, many of the most powerful are statically typed functional languages. In this paper I present the dynamically typed, object orientated language Converge which allows compile-time meta-programming in the spirit of Tem...
متن کاملModel transformations in Converge
Model transformations are currently the focus of much interest and research due to the OMG’s QVT initiative. Current proposals for model transformation languages can be divided into two main camps: those taking a ‘declarative’ approach, and those opting for an ‘imperative’ approach. In this paper we detail an imperative, meta-circular, object orientated, pattern matching programming language Co...
متن کاملConvergence rate examples and theory
If you use lfe for various tasks, you will notice that some estimations converge fast, whereas others converge slowly. Convergence rate of the methods used by lfe is not a walk in the park. Here are some examples.
متن کاملOptimum Design of Sewer Collection Networks
Various methods have been used to economically design wastewater and stormwater collection systems. In this article, Discrete Differential Dynamic Programming (DDDP) which is a subsection of dynamic programming (DP) was used. For each pipe network, various alternatives such as depth and slope of pipe laying and various diameters could be considered to satisfy hydraulic and engineering constrain...
متن کاملName Management: A Catalyst for Persistence and Interoperability
The integration of persistence and interoperability mechanisms into modern programming languages has important implications for software engineering. Research in these areas, however, has neglected significant name management-related issues. In this paper, we describe some important name management issues that arise when persistence and interoperability converge with programming languages. We a...
متن کامل